import { RequestBody } from 'alova';

import ApiClient from '@/api/apiClient';
type Merged<T, U> = T & U;
/**
 * UserInfo对象
 */
export interface UserInfoType {
	/**
	 * 创建人
	 */
	createBy?: string;
	/**
	 * 创建人id
	 */
	createId?: number;
	/**
	 * 创建时间
	 */
	createTime?: string;
	/**
	 * 邮箱
	 */
	email?: string;
	/**
	 * 机构ID
	 */
	enterpriseId?: number;
	/**
	 * 主键
	 */
	id?: number;
	/**
	 * 是否逻辑删除，0否,其他是
	 */
	isDelete?: number;
	/**
	 * 是否启用 0否 1:是
	 */
	isEnable?: number;
	/**
	 * 是否审核 0否 1是
	 */
	isReview?: number;
	/**
	 * 姓名
	 */
	name?: string;
	/**
	 * 组织部门ID
	 */
	orgId?: number;
	/**
	 * 密码
	 */
	password?: string;
	/**
	 * 手机号
	 */
	phone?: string;
	/**
	 * 租户编号
	 */
	tenantId?: number;
	/**
	 * 租户名
	 */
	tenantName?: string;
	/**
	 * 用户类型 1:门户管理员 2:机构管理员 3:机构用户
	 */
	type?: number;
	/**
	 * 修改人
	 */
	updateBy?: string;
	/**
	 * 修改人id
	 */
	updateId?: number;
	/**
	 * 更新时间
	 */
	updateTime?: Date;
	/**
	 * 用户名
	 */
	userName?: string;
	/**
	 * 乐观锁版本号
	 */
	version?: number;
	[property: string]: any;
}

/** 用户-列表 */
export const adminUserListApi = (data: RequestBody) => {
	return ApiClient.Post<API.ListType<UserInfoType>>('/user/page', data);
};
/** 用户-详情 */
export const adminUserDetailApi = (data: Merged<RequestBody, { id: number }>) => {
	return ApiClient.Get(`/user/get/${data?.id}`);
};
/** 用户-增与编辑 */
export const adminUserAddApi = (data: Merged<RequestBody, { id: number }>) => {
	return ApiClient.Post(`/user/${data?.id ? 'update' : 'add'} `, data);
};

/**
 * 更新管理员用户密码的API接口
 * @param data 请求体参数，包含需要更新的密码信息
 * @returns 返回API调用结果
 */
export const adminUserPWDApi = (data: RequestBody) => {
	return ApiClient.Post('/user/updatePwd', data);
};
/** 用户-删除 */
export const adminUserDeleteApi = (data: Merged<RequestBody, { id: number }>) => {
	return ApiClient.Post(`/user/delete/${data?.id}`, data, {
		params: data
	});
};

/** 用户-重置密码 */
export const adminUserRestPwdApi = (data: Merged<RequestBody, { id: number }>) => {
	return ApiClient.Get(`/user/restPwd/${data?.id}`);
};
